home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / trucos / clipper / clipper.cd next >
Encoding:
Text File  |  1995-01-03  |  4.7 KB  |  227 lines

  1.  
  2.  
  3. CLIPPER
  4.  
  5. CALENDARIOS
  6.  
  7. La siguiente función muestra en pantalla el calendario del mes actual.
  8. Si pulsamos las teclas «flecha arriba» y «flecha abajo», retrocedemos
  9. o avanzamos un mes. Si pulsamos las teclas «pag_up» y «pag_down»
  10. retrocedemos o avanzamos un año respectivamente. Para salir del
  11. calendario, hay que pulsar la tecla «escape».
  12.  
  13. Su funcionamiento es muy sencillo: basta con llamarlo desde nuestro
  14. programa mediante «calendar()». Además, permite que se le pasen
  15. cuatro parámetros, tal y como se describen en el listado de la
  16. función. Estos son las coordenadas de la esquina superior de la caja
  17. (fila y columna), el color del título (cColorDia) y el color de los
  18. números (cColorFecha). Si se llama a la función sin parámetros, se
  19. cogen los asignados por defecto.
  20.  
  21. Para que la rutina funcione correctamente el formato de fecha debe ser
  22. del tipo dd/mm/aa. En este caso se ha elegido lo que se conoce como
  23. formato italiano.
  24.  
  25. function calendar(fila,columna,cColorDia,cColorFecha)
  26.  
  27. set date italian
  28.  
  29. if fila==NIL
  30.  
  31.  fila:=5
  32.  
  33. endif
  34.  
  35. if columna==NIL
  36.  
  37.  columna:=10
  38.  
  39. endif
  40.  
  41. if cColorDia==NIL
  42.  
  43.  cColorDia:="w+/b"
  44.  
  45. endif
  46.  
  47. if cColorFecha==NIL
  48.  
  49.  cColorFecha:="gr+/b"
  50.  
  51. endif
  52.  
  53.  
  54. dFecha1=date()
  55.  
  56. do while lastkey()!=27
  57.  
  58. nFila:=fila
  59.  
  60. nCol:=columna
  61.  
  62.  setcolor(cColorFecha)
  63.  
  64.  @nFila-4,nCol,nFila+6,nCol+25 BOX "╔═╗║╝═╚║ "
  65.  
  66.  cTitulo := cMonth(dFecha1)+str(year(dFecha1))
  67.  
  68.  nLongitud := int(len(cTitulo)/2)
  69.  
  70.  @nFila-3,nCol+13-nLongitud say cTitulo
  71.  
  72.  @nFila-2,nCol+1 to nFila-2,nCol+24
  73.  
  74.  setcolor(cColorDia)
  75.  
  76.  @nFila-1,nCol+3 say " D L M X J V S"
  77.  
  78.  setcolor(cColorFecha)
  79.  
  80.  for t=1 to 31
  81.  
  82.  fecha=str(t)+"/"+str(month(dFecha1))+"/"+str(year(dFecha1))
  83.  
  84.  fecha=ctod(fecha)
  85.  
  86.  if dow(fecha)!=0
  87.  
  88.  @nFila,nCol+((dow(fecha))*3) say t picture "99"
  89.  
  90.  endif
  91.  
  92.  if dow(fecha)=7
  93.  
  94.  nFila++
  95.  
  96.  endif
  97.  
  98.  next
  99.  
  100.  inkey(0)
  101.  
  102.  if lastkey()=5 .and. month(dFecha1)>1
  103.  
  104.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1)-1)+"/"+str(year
  105.  (dFecha1)))
  106.  
  107.  elseif lastkey()=24 .and. month(dFecha1)<12
  108.  
  109.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1)+1)+"/"+str(year
  110.  (dFecha1)))
  111.  
  112.  elseif lastkey()=18
  113.  
  114.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1))+"/"+str(year
  115.  (dFecha1)-1))
  116.  
  117.  elseif lastkey()=3
  118.  
  119.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1))+"/"+str(year
  120.  (dFecha1)+1))
  121.  
  122.  endif
  123.  
  124. enddo
  125.  
  126. Fernando A. Casa Vázquez
  127.  
  128. Fuenlabrada (Madrid)
  129.  
  130.  
  131. TRES FUNCIONES
  132.  
  133. Función para rellenar una parte de la pantalla de un color
  134.  
  135. Esta simple función nos permite rellenar una zona de la pantalla de un
  136. color, mediante la introducción de los parámetros de las coordenadas y
  137. el tipo de color.
  138.  
  139. Esta rutina sólo funciona en la versión 5.2 de Clipper, aunque puede
  140. servir en versiones anteriores incluyendo tras la definición de los
  141. parámetros la orden «SET COLOR TO /&COLORE» y borrando en la línea del
  142. REPLICATE el trozo que dice «COLOR "/"+COLORES».
  143.  
  144. PROCEDURE TROZO
  145.  
  146. PARAMETERS F1, C1, F2, C2, COLORES
  147.  
  148. CO2= (C2-C1)+1
  149.  
  150. DO WHILE F1<=F2
  151.  
  152.  @ F1,C1 SAY REPLICATE(" ",CO2) COLOR "/"+COLORES
  153.  
  154.  F1=F1+1
  155.  
  156. ENDDO
  157.  
  158. RETURN
  159.  
  160. Función para la mezcla de colores de fondo
  161.  
  162. Esta pequeña función nos permite mezclar los caracteres ASCII 176, 177
  163. y 178 (que son prácticamente iguales pero se diferencian en el
  164. espesor) con distintos colores y rellenar toda la pantalla. Así
  165. podremos conseguir infinidad de colores para el fondo de la pantalla.
  166.  
  167. Los parámetros que se han de especificar son los caracteres ASCII 176,
  168. 177 y 178, y los colores (NORMAL/FONDO). Esta función sólo funciona
  169. con la versión 5.2 de Clipper; para que podamos usarla con versiones
  170. anteriores se ha de incluir después de la definición de los parámetros
  171. la instrucción «SET COLOR TO &COLORES» y se ha de borrar en la línea
  172. del REPLICATE el trozo que dice «COLOR "/"+COLORES».
  173.  
  174. PROCEDURE FONDO
  175.  
  176. PARAMETERS CARACTER, COLORES
  177.  
  178. F=0
  179.  
  180. DO WHILE F<=24
  181.  
  182.  @ F,0 SAY REPLICATE (CARACTER,80) COLOR "/"+COLORES
  183.  
  184.  F=F+1
  185.  
  186. ENDDO
  187.  
  188. RETURN
  189.  
  190. Función para crear la sombra de los recuadros
  191.  
  192. En esta función basta con introducir como parámetros las coordenadas
  193. que tiene el recuadro y automáticamente la función crea la sombra del
  194. mismo.
  195.  
  196. Sólo sirve para la versión 5.2 de Clipper, pero podemos adaptarla a
  197. versiones anteriores si después de la definición de los parámetros
  198. incluimos la instrucción «SET COLOR TO /N» y en la línea del REPLICATE
  199. borramos el trozo que dice «COLOR "/N"».
  200.  
  201. PROCEDURE SOMBRA
  202.  
  203. PARAMETERS F1, C1, F2, C2
  204.  
  205. ABAJO=(C2-C1)+1
  206.  
  207. LATERAL=(F2-F1)+1
  208.  
  209. @ F2+1, C1+2 SAY REPLICATE(" ", ABAJO) COLOR "/N"
  210.  
  211. FOR I = 1 TO LATERAL
  212.  
  213.  @ F1+1, C2+1 SAY " " COLOR "/N"
  214.  
  215.  F1=F1+1
  216.  
  217. NEXT
  218.  
  219. RETURN
  220.  
  221. Alberto Ruiz Bermúdez
  222.  
  223. Hospitalet (Barcelona)
  224.  
  225.  
  226.  
  227.